#ifndef __IPZ_DEV_INFO_H
#define __IPZ_DEV_INFO_H

#ifdef IPZ_DEVINFO_GLOBAL
	#define	IPZ_DEV_INFO_EXT	
#else
	#define	IPZ_DEV_INFO_EXT	extern
#endif


#define IPZ_ZBC_DEV_AF_AUTO 			    0x00
#define IPZ_ZBC_DEV_AF_ONE_FOCUS 		    0x01
#define IPZ_ZBC_DEV_AF_MANUAL 			    0x02

#define	IPZ_ZBC_DEV_AF_NORMAL	            0x00
#define	IPZ_ZBC_DEV_AF_INTERVAL	            0x01
#define	IPZ_ZBC_DEV_AF_TRIGGER	            0x02

#define	IPZ_ZBC_DEV_AF_SENSE_LOW	        0x00
#define	IPZ_ZBC_DEV_AF_SENSE_MID	        0x01
#define	IPZ_ZBC_DEV_AF_SENSE_HIGH	        0x02

#define IPZ_ZBC_DEV_AF_LIMT_10CM  			0x00
#define IPZ_ZBC_DEV_AF_LIMT_30CM  			0x01
#define IPZ_ZBC_DEV_AF_LIMT_1M  			0x02
#define IPZ_ZBC_DEV_AF_LIMT_1M5  			0x03
#define IPZ_ZBC_DEV_AF_LIMT_3M  			0x04
#define IPZ_ZBC_DEV_AF_LIMT_6M  			0x05
#define IPZ_ZBC_DEV_AF_LIMT_10M  			0x06
#define IPZ_ZBC_DEV_AF_LIMT_20M  			0x07
#define IPZ_ZBC_DEV_AF_LIMT_50M  			0x08
#define IPZ_ZBC_DEV_AF_LIMT_100M  			0x09
#define IPZ_ZBC_DEV_AF_LIMT_200M  			0x0A
#define IPZ_ZBC_DEV_AF_LIMT_500M  			0x0B
#define IPZ_ZBC_DEV_AF_LIMT_1000M  			0x0C
#define IPZ_ZBC_DEV_AF_LIMT_2000M  			0x0D
#define IPZ_ZBC_DEV_AF_LIMT_INF  			0x0E


#define IPZ_ZBC_DEV_AF_WIN_OFF              0
#define IPZ_ZBC_DEV_ZOOM_SPEED			    7
#define IPZ_ZBC_DEV_DZOOM_LEVEL			    16

#define IPZ_ZBC_DEV_DZOOM_SW		        0

#define	IPZ_ZBC_DEV_DZOOM_CLOSE			    0
#define	IPZ_ZBC_DEV_DZOOM_OPEN			    1

#define IPZ_ZBC_DEV_DNMODE_AUTO  			0
#define IPZ_ZBC_DEV_DNMODE_DAY				1
#define IPZ_ZBC_DEV_DNMODE_NIGHT			2
#define IPZ_ZBC_DEV_DNMODE_FOG			    3

#define IPZ_ZBC_DEV_DNSTATUS_DAY		    0 
#define IPZ_ZBC_DEV_DNSTATUS_NIGHT			1
#define IPZ_ZBC_DEV_DNSTATUS_FOG			2


#define IPZ_ZBC_DEV_ZOOM_INVALID		    0 
#define IPZ_ZBC_DEV_ZOOM_SPERATE			1
#define IPZ_ZBC_DEV_ZOOM_FOCUS			    2



#define ZBC_CALCULATE_SYSGAIN(ag, dg, ispdg, sysgain)\
do{\
    SW_UINT64 u64Tmp;\
    u64Tmp = (ag);\
    u64Tmp = (u64Tmp * (dg)) >> 10;\
    u64Tmp = (u64Tmp * (ispdg)) >> 10;\
    (sysgain)   = (SW_UINT32)u64Tmp;\
}while(0)

typedef enum _IPZ_ZBC_DEV_PRD_TYPE
{
    IPZ_ZBC_DEV_PRD_ZN2237 = 0X0001,   
    IPZ_ZBC_DEV_PRD_ZN2133 = 0X0002,                       
    IPZ_ZBC_DEV_PRD_ZN2252 = 0X0003,
    IPZ_ZBC_DEV_PRD_ZN2020 = 0X0004, 
    IPZ_ZBC_DEV_PRD_ZN4237 = 0X0005, 
    IPZ_ZBC_DEV_PRD_ZN4204 = 0X0006, 
    IPZ_ZBC_DEV_PRD_ZN4206 = 0X0007, 
    IPZ_ZBC_DEV_PRD_ZN2133S = 0X0008, 
    IPZ_ZBC_DEV_PRD_ZN2126 = 0X0009, 
    IPZ_ZBC_DEV_PRD_ZN4133 = 0X000a,
    IPZ_ZBC_DEV_PRD_ZN4133S = 0X000b,
    IPZ_ZBC_DEV_PRD_ZN2146 = 0X000c,
    IPZ_ZBC_DEV_PRD_ZN4252 = 0X000d,
    IPZ_ZBC_DEV_PRD_ZN2272 = 0X000e,
    IPZ_ZBC_DEV_PRD_ZN4225 = 0X000f,
    IPZ_ZBC_DEV_PRD_ZN2172 = 0X0010,
    IPZ_ZBC_DEV_PRD_ZN4290 = 0X0011,
    IPZ_ZBC_DEV_PRD_ZNS2126 = 0X0012,
    IPZ_ZBC_DEV_PRD_ZN4286 = 0X0013,
    IPZ_ZBC_DEV_PRD_ZN2292  = 0X0014,
    IPZ_ZBC_DEV_PRD_ZN2265  = 0X0015,
	IPZ_ZBC_DEV_PRD_ZNS2133 = 0X0016,
	IPZ_ZBC_DEV_PRD_ZNS4110 = 0X0017,
	IPZ_ZBC_DEV_PRD_ZNS2110 = 0X0018,
	IPZ_ZBC_DEV_PRD_ZNS4133 = 0X0019,
	IPZ_ZBC_DEV_PRD_ZNS2104 = 0X001A,
	IPZ_ZBC_DEV_PRD_ZNS4104 = 0X001B,
	IPZ_ZBC_DEV_PRD_ZNS2140 = 0X001C,
	IPZ_ZBC_DEV_PRD_ZN2126S = 0X001D,
	IPZ_ZBC_DEV_PRD_ZNS4240 = 0X001E,
	IPZ_ZBC_DEV_PRD_ZNS8240 = 0X001F,

	IPZ_ZBC_DEV_PRD_ZN42120 = 0X0020,
    IPZ_ZBC_DEV_PRD_ZN42100 = 0X0021,
    IPZ_ZBC_DEV_PRD_D_ZN2236  = 0X0022,
    IPZ_ZBC_DEV_PRD_ZNS2120 = 0X0023,
    IPZ_ZBC_DEV_PRD_ZN22901  = 0X0024,
    IPZ_ZBC_DEV_PRD_ZN42901  = 0X0025,
    IPZ_ZBC_DEV_PRD_ZN42831  = 0X0026,
	IPZ_ZBC_DEV_PRD_ZN8252	= 0X0027,
	IPZ_ZBC_DEV_PRD_ZN4245 = 0X0028,

	IPZ_ZBC_DEV_PRD_ZNS2146 = 0X0029,
	IPZ_ZBC_DEV_PRD_ZN42861 = 0X002A,
	IPZ_ZBC_DEV_PRD_ZN42101 = 0X002B,
	IPZ_ZBC_DEV_PRD_ZN21461 = 0X002C,

	IPZ_ZBC_DEV_PRD_ZNN2133  = 0X002d,
	IPZ_ZBC_DEV_PRD_ZNS5120  = 0X002e,
	IPZ_ZBC_DEV_PRD_ZN2275   = 0X002f,
	IPZ_ZBC_DEV_PRD_ZN4275   = 0X0030,
	IPZ_ZBC_DEV_PRD_ZNS5140  = 0X0031,
	IPZ_ZBC_DEV_PRD_ZNN2126  = 0X0032,
	IPZ_ZBC_DEV_PRD_ZNN4133  = 0X0033,
	IPZ_ZBC_DEV_PRD_ZNS4160  = 0X0034,
	IPZ_ZBC_DEV_PRD_ZNS8110  = 0X0035,
	IPZ_ZBC_DEV_PRD_ZN4292   = 0X0036,
	IPZ_ZBC_DEV_PRD_ZN4236   = 0X0037,
	IPZ_ZBC_DEV_PRD_ZNN4125  = 0X0038,

	IPZ_ZBC_DEV_PRD_ZN4286O  = 0X0040,
	IPZ_ZBC_DEV_PRD_ZN42100DHL = 0X0041,
	IPZ_ZBC_DEV_PRD_ZN4204A    = 0x0042,
	IPZ_ZBC_DEV_PRD_ZNN8125    = 0x0043,
	IPZ_ZBC_DEV_PRD_ZNH4230    = 0x0046,
	IPZ_ZBC_DEV_PRD_ZNH4240    = 0x0048,
	IPZ_ZBC_DEV_PRD_ZNH2120    = 0x0049,
	
    IPZ_ZBC_DEV_PRD_NUM
}IPZ_ZBC_DEV_PRD_TYPE;


typedef enum _IPZ_ZBC_DEV_MAGNICATION_TYPE
{
    IPZ_ZBC_DEV_MAGNICATION_1X = 1,                        

	IPZ_ZBC_DEV_MAGNICATION_3X = 3,
	IPZ_ZBC_DEV_MAGNICATION_4X = 4,
	IPZ_ZBC_DEV_MAGNICATION_5X = 5,
	IPZ_ZBC_DEV_MAGNICATION_6X = 6,
	IPZ_ZBC_DEV_MAGNICATION_10X = 10,
	IPZ_ZBC_DEV_MAGNICATION_20X = 20,
	IPZ_ZBC_DEV_MAGNICATION_23X = 23,
	IPZ_ZBC_DEV_MAGNICATION_25X = 25,
	IPZ_ZBC_DEV_MAGNICATION_26X = 26,
	IPZ_ZBC_DEV_MAGNICATION_30X = 30,
    IPZ_ZBC_DEV_MAGNICATION_32X = 32,
    IPZ_ZBC_DEV_MAGNICATION_33X = 33,
    IPZ_ZBC_DEV_MAGNICATION_35X = 35,  
    IPZ_ZBC_DEV_MAGNICATION_36X = 36,
    IPZ_ZBC_DEV_MAGNICATION_37X = 37,
    IPZ_ZBC_DEV_MAGNICATION_45X = 45,
    IPZ_ZBC_DEV_MAGNICATION_46X = 46,
    IPZ_ZBC_DEV_MAGNICATION_50X = 50,
    IPZ_ZBC_DEV_MAGNICATION_52X = 52,
    IPZ_ZBC_DEV_MAGNICATION_60X = 60,
    IPZ_ZBC_DEV_MAGNICATION_72X = 72,
    IPZ_ZBC_DEV_MAGNICATION_75X = 75,
    IPZ_ZBC_DEV_MAGNICATION_83X = 83,
    IPZ_ZBC_DEV_MAGNICATION_86X = 86,
    IPZ_ZBC_DEV_MAGNICATION_90X = 90,
    IPZ_ZBC_DEV_MAGNICATION_100X = 100,
    IPZ_ZBC_DEV_MAGNICATION_128X = 128,
    IPZ_ZBC_DEV_MAGNICATION_NUM
}IPZ_ZBC_DEV_MAGNICATION_TYPE;


typedef enum _IPZ_ZBC_DEV_SENSOR_TYPE
{
    IPZ_ZBC_DEV_SERNSOR_SONY_IMX185 = 1,                        
    IPZ_ZBC_DEV_SERNSOR_SONY_IMX385 = 2,
    IPZ_ZBC_DEV_SERNSOR_SONY_IMX274 = 3, 
    IPZ_ZBC_DEV_SERNSOR_SONY_IMX327 = 4, 
    IPZ_ZBC_DEV_SERNSOR_SONY_IMX334 = 5,
    IPZ_ZBC_DEV_SERNSOR_SONY_IMX307 = 6,
    IPZ_ZBC_DEV_SERNSOR_SENSE_SC2232 = 7,
    IPZ_ZBC_DEV_SERNSOR_SONY_IMX347 = 8,
    IPZ_ZBC_DEV_SERNSOR_OV_OS05A20 = 9,
    IPZ_ZBC_DEV_SERNSOR_SC_450AI = 10,
    IPZ_ZBC_DEV_SERNSOR_SC_850SL = 11,
    IPZ_ZBC_DEV_SERNSOR_SONY_IMX464 = 12,
	IPZ_ZBC_DEV_SERNSOR_SONY_IMX678 = 13,
    IPZ_ZBC_DEV_SERNSOR_SC_230AI = 14,
    IPZ_ZBC_DEV_SERNSOR_SONY_IMX415 = 15,
    IPZ_ZBC_DEV_SERNSOR_OV_OS04A10  = 16,
    IPZ_ZBC_DEV_SENSOR_NUM
}IPZ_ZBC_DEV_SENSOR_TYPE;

typedef enum _IPZ_ZBC_DEV_LENS_TYPE
{
    IPZ_ZBC_DEV_LENS_UNION_T5183   = 1,  
    IPZ_ZBC_DEV_LENS_ZMAX_F062     = 2,  
    IPZ_ZBC_DEV_LENS_ZMAX_F028     = 3,
    IPZ_ZBC_DEV_LENS_ZMAX_F023     = 4,  
    IPZ_ZBC_DEV_LENS_ZMAX_F124     = 5,  
    IPZ_ZBC_DEV_LENS_TAMRON_DF033  = 6, 
    IPZ_ZBC_DEV_LENS_UNION_T5291   = 7, 
    IPZ_ZBC_DEV_LENS_UNION_T5709   = 8, 
    IPZ_ZBC_DEV_LENS_UNION_T5188   = 9,
    IPZ_ZBC_DEV_LENS_ZMAX_F027     = 10,
    IPZ_ZBC_DEV_LENS_UNION_T5375   = 11,
    IPZ_ZBC_DEV_LENS_UNION_T5391   = 12,
    IPZ_ZBC_DEV_LENS_ZMAX_F028_4M  = 13,
    IPZ_ZBC_DEV_LENS_ZMAX_F140     = 14,
    IPZ_ZBC_DEV_LENS_ZMAX_F140L    = 15,
    IPZ_ZBC_DEV_LENS_ZMAX_F140LL   = 16,
    IPZ_ZBC_DEV_LENS_UNION_T5756   = 17,
    IPZ_ZBC_DEV_LENS_UNION_T5096   = 18,
    IPZ_ZBC_DEV_LENS_UNION_T5215   = 19,
    IPZ_ZBC_DEV_LENS_UNION_YS62    = 20,
    IPZ_ZBC_DEV_LENS_ZMAX_F140LLL  = 21,
    IPZ_ZBC_DEV_LENS_UNION_YS62L   = 22,
    IPZ_ZBC_DEV_LENS_UNION_T5709A  = 23,
    IPZ_ZBC_DEV_LENS_UNION_T5719   = 24,
    IPZ_ZBC_DEV_LENS_ZMAX_F162     = 25,  
    IPZ_ZBC_DEV_LENS_NUM
}IPZ_ZBC_DEV_LENS_TYPE;

typedef enum _IPZ_ZBC_DEV_MOTOR_TYPE
{
    IPZ_ZBC_DEV_MOTOR_AN41908A = 1, 
    IPZ_ZBC_DEV_MOTOR_MS41908 = 2,
    IPZ_ZBC_DEV_MOTOR_MS41959 = 3,
    IPZ_ZBC_DEV_MOTOR_NUM
}IPZ_ZBC_DEV_MOTOR_TYPE;


typedef enum _IPZ_ZBC_DEV_IRIS_TYPE
{
    IPZ_ZBC_DEV_DC_IRIS,                        
    IPZ_ZBC_DEV_P_IRIS,                         
    IPZ_ZBC_DEV_FIX_IRIS,                         
    IPZ_ZBC_DEV_IRIS_NUM
}IPZ_ZBC_DEV_IRIS_TYPE;


typedef enum _IPZ_ZBC_DEV_FCT_TYPE
{
    IPZ_ZBC_DEV_FCT_ABF,                        
    IPZ_ZBC_DEV_FCT_ZBC,                         
    IPZ_ZBC_DEV_FCT_AIPO,                         
    IPZ_ZBC_DEV_FCT_NUM
}IPZ_ZBC_DEV_FCT_TYPE;

typedef enum _IPZ_ZBC_DEV_IRIS_STATUS
{
    IPZ_ZBC_DEV_IRIS_CALIB_PRE,
    IPZ_ZBC_DEV_IRIS_CALIB_DOWN,
    IPZ_ZBC_DEV_IRIS_CALIB_UP,
    IPZ_ZBC_DEV_IRIS_AUTO,
    IPZ_ZBC_DEV_IRIS_MANU,              
    IPZ_ZBC_DEV_IRIS_SHUTTER_FIRST,
    IPZ_ZBC_DEV_IRIS_IRIS_FIRST,
    IPZ_ZBC_DEV_IRIS_BUTT
}IPZ_ZBC_DEV_IRIS_STATUS;



typedef struct _IPZ_ZBC_DEV_FOCUS_STATUS
{
    SW_UINT8    u8FocusMode; 
	SW_UINT8    u8AFMode; 
	SW_UINT8    u8AFSense; 
	SW_UINT8    u8AFLimit; 
    SW_UINT8    u8ZoomDirectType;
    SW_UINT8    u8OneFocusDone;
    SW_UINT8    u8ZoomSpeed;
	SW_UINT8    u8DzoomSW; 
	SW_UINT8    u8DzoomMode;
	SW_UINT8    u8DZoomMagLimit;
    SW_UINT16   u16AFWin;
    
}IPZ_ZBC_DEV_FOCUS_STATUS;


typedef enum _IPZ_ZBC_WDR_MODE
{
    IPZ_ZBC_WDR_NONE = 0,
    IPZ_ZBC_WDR_BUILT_IN,

    IPZ_ZBC_WDR_2To1_LINE,

    IPZ_ZBC_WDR_MODE_BUTT,
} IPZ_ZBC_WDR_MODE;

typedef enum _IPZ_ZBC_RESOLUTION_MODE
{
	IPZ_ZBC_RESOLUTION_NORM = 0,
	IPZ_ZBC_RESOLUTION_720P,       		// 1280 * 720, 16:9
    IPZ_ZBC_RESOLUTION_960P,       		// 1280 * 960, 4:3
    IPZ_ZBC_RESOLUTION_1080P,      		// 1920 * 1080,16:9
    IPZ_ZBC_RESOLUTION_3M_1536P,   		// 2048 * 1536, 4:3, SUVGA/QXGA
    IPZ_ZBC_RESOLUTION_3M_1296P = 5,   	// 2304 * 1296, 16:9
    IPZ_ZBC_RESOLUTION_4M_1520P,   		// 2592 * 1520, 16:9, not stand, should be 2592 * 1458
    IPZ_ZBC_RESOLUTION_5M_1920P,   		// 2560 * 1920, 4:3
    IPZ_ZBC_RESOLUTION_5M_1944P,   		// 2592 * 1944,4:3
    IPZ_ZBC_RESOLUTION_5M_1728P,   		// 3072 * 1728, 16:9

    IPZ_ZBC_RESOLUTION_MODE_NUM
}IPZ_ZBC_RESOLUTION_MODE;

typedef enum _IPZ_ZBC_FRAME_TYPE
{
    IPZ_ZBC_FRAME_25P = 25,
    IPZ_ZBC_FRAME_30P = 30,
    IPZ_ZBC_FRAME_50P = 50,
    IPZ_ZBC_FRAME_60P = 60,
    
    IPZ_ZBC_FRAME_NUM    
}IPZ_ZBC_FRAME_TYPE;

typedef struct _IPZ_ZBC_EXPOSURE_VAR
{
    SW_UINT32 u32ZoomPos;           /**< Current zoom position */
    SW_UINT32 u32ZoomRatio;         /**< Zoom ratio U22Q10*/
    SW_UINT32 u32LumRatioLinear;    /**< Luminance ratio linear U22Q10 */
    SW_UINT32 u32LumRatioWdr;       /**< Luminance ratio wdr U22Q10 */
    SW_LIMIT_UINT32 stIrisLimit;    /**< Iris limit */
    SW_UINT32 u32IrisLowLight;      /**< Iris max for low light */
    SW_UINT32 u32SharpenRatioLinear;/**< Sharpen ratio linear U22Q10 */
    SW_UINT32 u32SharpenRatioWdr;   /**< Sharpen ratio wdr U22Q10 */
    SW_INT32  s32LdcRatio;          /**< LDC ratio */
}IPZ_ZBC_EXPOSURE_VAR;

typedef struct _IPZ_ZBC_DEV_EXPOURSE_STATUS
{
    SW_UINT32   u32Luminance;
    SW_UINT32   u32ExpLineMaxBase;
    SW_UINT32   u32ExpLineMinBase;
    IPZ_ZBC_DEV_IRIS_STATUS eIrisStatus;
    SW_UINT16   u32AEWin;
	SW_UINT8    u8ManualIrisValue; 	    /*0-100*/
    SW_UINT16    u16IrisToSetMaxLimit;
    SW_UINT16    u16IrisMaxLimit;
    SW_UINT16    u16IrisMinLimit;
    SW_INT16    s16PwmCurValue;
    SW_UINT32   u32GainMaxBase;
    SW_UINT32   u32SysGain;
    SW_UINT32   u32IspEva;
    SW_UINT32   u32IspEvaAve;
    SW_UINT32   u32IspEvaAveDiff;
    SW_UINT32   u32SatuVal;
    SW_INT16    s16HistError;

    SW_UINT32   u32ExposureTime;
    SW_UINT32   u32AnalogGain;
    SW_UINT32   u32DigitalGain;
    SW_UINT32   u32IspGain;
    SW_UINT32   u32Iso;
    SW_UINT32   u32ActualIso;
    SW_UINT32   u32DrcStrength;   /* 0 ~ 0xFF */
    SW_UINT32   u32WdrRatio;      /* U26Q6 */
    SW_UINT32   u32Exposure;
    SW_UINT8    u8AveLum;    
    SW_UINT8    u8CompensationBase;
    SW_UINT8    u8CompensationCur;
    SW_UINT32   u32Fps;
   // SW_UINT16   u16Rgain;             /*RO, AWB result of R color channel, Range: [0x0, 0xFFF]*/
   // SW_UINT16   u16Grgain;            /*RO, AWB result of Gr color channel, Range: [0x0, 0xFFF]*/
   // SW_UINT16   u16Gbgain;            /*RO, AWB result of Gb color channel, Range: [0x0, 0xFFF]*/
   // SW_UINT16   u16Bgain;             /*RO, AWB result of B color channel, Range: [0x0, 0xFFF]*/
    SW_UINT16   u16ColorTemp;
   // SW_UINT8    u8CfgFileSelectPre;
   // SW_UINT8    u8CfgFileSelect;
    IPZ_ZBC_WDR_MODE  enWdrMode;
   
    
}IPZ_ZBC_DEV_EXPOURSE_STATUS;

typedef struct _IPZ_ZBC_DEV_ICR_STATUS
{
    SW_UINT8    u8DNMode;
    SW_UINT8    u8DNStatus;
	SW_UINT8    u8DNSense;
	SW_UINT8    u8DNTime;
	SW_UINT8    u8AutoDNSenseValue;	//数值
	SW_UINT8    u8C2WTime;			//彩色->黑白时间
	SW_UINT8    u8W2CTime;			//黑白->彩色时间	
	SW_UINT8    u8C2Wagc;
	SW_UINT8    u8W2Cagc;
    
}IPZ_ZBC_DEV_ICR_STATUS;	

typedef enum _IPZ_ZBC_DOME_MODE
{
    IPZ_ZBC_ZDM_AUTO,
    IPZ_ZBC_ZDM_MANUAL,
    IPZ_ZBC_ZDM_NUM
}IPZ_ZBC_DOME_MODE_E;

typedef enum _IPZ_ZBC_DOME_STATE
{
    IPZ_ZBC_ZDS_OFF,
    IPZ_ZBC_ZDS_ON,
    IPZ_ZBC_ZDS_DETECT,
    IPZ_ZBC_ZDS_REDETECT,
    IPZ_ZBC_ZDS_NUM
}IPZ_ZBC_DOME_STATE_E;

typedef struct _IPZ_ZBC_DOME_ATTR
{
    SW_BAUD_RATE enBaudRate;
    SW_DATA_BITS enDataBits;
    SW_STOP_BITS enStopBits;
    SW_PARITY enParity;
    IPZ_ZBC_DOME_MODE_E enMode;        
    IPZ_ZBC_DOME_STATE_E enState;      /**< Dome state, RW Only for MANUAL mode, RO for AUTO mode */
    SW_UINT32 u32Delay;               /**< Only for AUTO mode, after <delay> seconds begin to detect dome */
    SW_BOOL bDebug;
}IPZ_ZBC_DOME_ATTR_S;
    

typedef struct 
{
    int enable;				//是否有PT信息
	int p_pos ;				///< 水平位置
	int t_pos ;				///< 垂直位置
	int ptfrom;				//0:232 1:485 
}IPZ_ZBC_DEV_PAN_TILT;

typedef struct _IPZ_ZBC_DEV_INFO
{
    SW_MUTEX hDevMutex;
    SW_BOOL bWorkType;
    SW_BOOL bWorkStatus;
    SW_BOOL bIsZoomCtrlBy232;
    SW_BOOL bIsFocusCtrlBy232;
    SW_BOOL bIsDomeConnect;
    SW_BOOL bPanTiltState;
	SW_BOOL bTempDectState;
    SW_UINT32 u32Height;
    SW_UINT32 u32Width;
    SW_UINT32 u32MirrorState;
	SW_UINT32 u32ApertAdjustState;
	IPZ_ZBC_DEV_PRD_TYPE eDevType; 
    IPZ_ZBC_DEV_SENSOR_TYPE eSensorType;
    IPZ_ZBC_DEV_LENS_TYPE eLensType;
    IPZ_ZBC_DEV_IRIS_TYPE eIrisType;
    IPZ_ZBC_DEV_MOTOR_TYPE eMotorType;
    IPZ_ZBC_RESOLUTION_MODE eReslutionMode;
	IPZ_ZBC_DEV_MAGNICATION_TYPE eMagnification; 
	IPZ_ZBC_DEV_FCT_TYPE eFctType;     
	IPZ_ZBC_DEV_FOCUS_STATUS stFocusStatus;
    IPZ_ZBC_DEV_EXPOURSE_STATUS stExpourseStatus;
    IPZ_ZBC_EXPOSURE_VAR stExposureVar;
    IPZ_ZBC_DEV_ICR_STATUS stIcrStatus;
    IPZ_ZBC_DOME_ATTR_S stDomeAttr;
    IPZ_ZBC_DEV_PAN_TILT stCurPanTilt;
}IPZ_ZBC_DEV_INFO; 


SW_RET IPZ_ZBC_DEV_DevinfoInit(void);
SW_RET IPZ_ZBC_DEV_DevinfoExit(void);
SW_BOOL IPZ_ZBC_DEV_IsZoomCtrlBy232(void);
void IPZ_ZBC_DEV_SetZoomCtrlBy232(SW_BOOL flag);
SW_BOOL IPZ_ZBC_DEV_IsFocusCtrlBy232(void);
void IPZ_ZBC_DEV_SetDomeConnectStatus(SW_BOOL flag);
SW_BOOL IPZ_ZBC_DEV_IsDomeConnect(void);
IPZ_ZBC_DEV_MAGNICATION_TYPE IPZ_ZBC_DEV_GetMagnifiType(void);
IPZ_ZBC_DEV_PRD_TYPE IPZ_ZBC_DEV_GetDevType(void);
SW_BOOL IPZ_ZBC_DEV_GetWorkType(void);
void IPZ_ZBC_DEV_SetWorkType(SW_BOOL bType);
IPZ_ZBC_DEV_SENSOR_TYPE IPZ_ZBC_DEV_GetSensorType(void);
IPZ_ZBC_DEV_LENS_TYPE IPZ_ZBC_DEV_GetLensType(void);
IPZ_ZBC_DEV_IRIS_TYPE IPZ_ZBC_DEV_GetIrisType(void);
SW_BOOL	IPZ_ZBC_DEV_GetFctType(void);
SW_BOOL IPZ_ZBC_DEV_IsDevInitDone(void);
void IPZ_ZBC_DEV_SetDevWorkStatus(SW_BOOL flag);
SW_UINT16 IPZ_ZBC_DEV_GetAFWinStatus(void);
void IPZ_ZBC_DEV_SetAFWinStatus(SW_UINT16 win);
SW_UINT8 IPZ_ZBC_DEV_GetFocusMode(void);
SW_INT IPZ_ZBC_DEV_SetFocusMode(SW_UINT8 mode);
SW_UINT8 IPZ_ZBC_DEV_GetAFMode(void);
SW_INT IPZ_ZBC_DEV_SetAFMode(SW_UINT8  mode);
SW_UINT8 IPZ_ZBC_DEV_GetAFSense(void); 
SW_INT IPZ_ZBC_DEV_SetAFSense(SW_UINT8  sense);
SW_UINT8 IPZ_ZBC_DEV_GetAFLimit(void);
SW_INT IPZ_ZBC_DEV_SetAFLimit(SW_UINT8  limit);
SW_BOOL	IPZ_ZBC_DEV_GetOneFoucsStatus(void);
SW_INT	IPZ_ZBC_DEV_SetOneFoucsStatus(SW_BOOL u8OneFocusDone);
SW_BOOL  IPZ_ZBC_DEV_GetFocusStatus(void);
SW_UINT8 IPZ_ZBC_DEV_GetZoomType(void);
SW_INT8 IPZ_ZBC_DEV_SetZoomType(SW_UINT8 mode);
SW_UINT8 IPZ_ZBC_DEV_GetDZoomMode(void);
SW_UINT8 IPZ_ZBC_DEV_GetDZoomSW(void);
SW_INT8 IPZ_ZBC_DEV_SetDZoomMode(SW_UINT8 mode);
void IPZ_ZBC_DEV_SetDZoomLimit(SW_UINT8 u8limit);
SW_UINT8 IPZ_ZBC_DEV_GetDZoomLimit(void);
void IPZ_ZBC_DEV_SetZoomSpeed(SW_UINT8 speed);
SW_UINT8 IPZ_ZBC_DEV_GetZoomSpeed(void); 
SW_INT16 IPZ_ZBC_DEV_GetCurPwm(void);
SW_INT IPZ_ZBC_DEV_SetCurPwm(SW_INT16 cur_pwm);
SW_INT IPZ_ZBC_DEV_SetCurPwmNoLimit(SW_INT16 cur_pwm);
SW_UINT8 IPZ_ZBC_DEV_GetAGCMin(void);
SW_UINT8 IPZ_ZBC_DEV_GetAGCMax(void);
//SW_INT IPZ_ZBC_DEV_GetCurAGC(void);
SW_UINT8 IPZ_ZBC_DEV_GetDNStatus(void);
SW_INT  IPZ_ZBC_DEV_SetDNStatus(SW_UINT8 iType);
SW_INT IPZ_ZBC_DEV_SetFPS(SW_UINT32 dType);
SW_INT IPZ_ZBC_DEV_SetAFArea(SW_UINT16 iType);
SW_UINT8  IPZ_ZBC_DEV_GetManuIris(void);
SW_VOID  IPZ_ZBC_DEV_SetManuIris(SW_UINT8 u8ManualIrisValue);
SW_UINT32 IPZ_ZBC_DEV_GetExposure(void);
SW_RET IPZ_ZBC_DEV_SetExposure(SW_UINT32 u32Exposure);
SW_UINT8 IPZ_ZBC_DEV_GetAveLum(void);
IPZ_ZBC_WDR_MODE IPZ_ZBC_DEV_GetWDRMode(void);
SW_INT IPZ_ZBC_DEV_SetWDRMode(IPZ_ZBC_WDR_MODE enWdrMode);
IPZ_ZBC_DEV_IRIS_STATUS IPZ_ZBC_DEV_GetExposureMode(void); 
SW_INT8 IPZ_ZBC_DEV_SetExposureMode(IPZ_ZBC_DEV_IRIS_STATUS eIrisStatus);
SW_UINT32 IPZ_ZBC_DEV_GetExposureTime(void);
SW_INT IPZ_ZBC_DEV_SetExposureTime(SW_UINT32 u32ExposureTime);
SW_UINT32 IPZ_ZBC_DEV_GetExposureAgc(SW_UINT32 u32Flag);
SW_INT IPZ_ZBC_DEV_SetExposureAgc(SW_UINT32 u32Flag,SW_UINT32 u32agc);
SW_UINT32 IPZ_ZBC_DEV_GetExposureISO(void);
SW_INT IPZ_ZBC_DEV_SetExposureISO(SW_UINT32 u32Iso);
SW_INT16 IPZ_ZBC_DEV_GetExposureHistError(void);
SW_INT IPZ_ZBC_DEV_SetExposureHistError(SW_INT16 s16HistError);
SW_UINT32 IPZ_ZBC_DEV_GetFPS(void);
SW_INT IPZ_ZBC_DEV_SetFPS(SW_UINT32 u32Fps);
SW_BAUD_RATE IPZ_ZBC_DEV_GetDomeBaud(void);
SW_INT IPZ_ZBC_DEV_SetDomeBaud(SW_BAUD_RATE enBaudRate);
IPZ_ZBC_DOME_MODE_E IPZ_ZBC_DEV_GetDomeMode(void);
SW_INT IPZ_ZBC_DEV_SetDomeMode(IPZ_ZBC_DOME_MODE_E enMode);
IPZ_ZBC_DOME_STATE_E IPZ_ZBC_DEV_GetDomeStatus(void);
SW_INT IPZ_ZBC_DEV_SetDomeStatus(IPZ_ZBC_DOME_STATE_E enState);
SW_UINT32 IPZ_ZBC_DEV_GetDomeDelay(void);
SW_INT IPZ_ZBC_DEV_SetDomeDelay(SW_UINT32 u32Delay);
SW_BOOL IPZ_ZBC_DEV_GetDomeDebug(void);
SW_INT IPZ_ZBC_DEV_SetDomeDebug(SW_BOOL bDebug);
SW_INT IPZ_ZBC_DEV_SetLensType(IPZ_ZBC_DEV_LENS_TYPE eLensType);
SW_INT IPZ_ZBC_DEV_SetDevType(SW_INT32 iDevType);
SW_INT IPZ_ZBC_DEV_SetDevType_Nomutex(SW_INT32 iDevType);
SW_INT IPZ_ZBC_DEV_SetSensorType(IPZ_ZBC_DEV_SENSOR_TYPE eSensorType);
SW_RET IPZ_ZBC_DEV_SetDevinfo(IPZ_ZBC_DEV_PRD_TYPE eDevType);
IPZ_ZBC_RESOLUTION_MODE IPZ_ZBC_DEV_GetReslutionMode(void);
SW_INT IPZ_ZBC_DEV_SetReslutionMode(IPZ_ZBC_RESOLUTION_MODE eReslutionMode);
SW_UINT8 IPZ_ZBC_DEV_GetExposureAveLum(void);
SW_INT IPZ_ZBC_DEV_SetExposureAveLum(SW_UINT8 u8AveLum);
SW_RET IPZ_ZBC_UpdateExposureVar(IPZ_ZBC_EXPOSURE_VAR *pstInfo);
IPZ_ZBC_EXPOSURE_VAR* IPZ_ZBC_DEV_GetExposureVarAddr(void);
void IPZ_ZBC_DEV_SetPanTiltState(SW_BOOL bState);
SW_BOOL IPZ_ZBC_DEV_GetPanTiltState(void);
SW_UINT16  IPZ_ZBC_DEV_GetIrisMaxLimit(void);
SW_VOID  IPZ_ZBC_DEV_SetIrisMaxLimit(SW_UINT16 u16IrisMaxLimit);
SW_UINT16  IPZ_ZBC_DEV_GetIrisMinLimit(void);
SW_VOID  IPZ_ZBC_DEV_SetIrisMinLimit(SW_UINT16 u16IrisMinLimit);
SW_UINT16  IPZ_ZBC_DEV_GetIrisToSetMaxLimit(void);
SW_VOID  IPZ_ZBC_DEV_SetIrisToSetMaxLimit(SW_UINT16 IrisToSetMaxLimit);

void IPZ_ZBC_DEV_SetCurPanTilt(int pan,int tilt);
void IPZ_ZBC_DEV_SetCurPanTilt_From485(SW_INT32 pan,SW_INT32 tilt);
void IPZ_ZBC_DEV_GetCurPanTilt(IPZ_ZBC_DEV_PAN_TILT *stCurPanTilt);

SW_INT32 IPZ_ZBC_DEV_GetBoardID(void);

SW_UINT8 IPZ_ZBC_DEV_GetDNMode(void);
void IPZ_ZBC_DEV_SetDNMode(SW_UINT8 mode);

SW_UINT32 IPZ_ZBC_DEV_GetMirrorState(void);
void IPZ_ZBC_DEV_SetMirrorState(SW_UINT32 u32MirrorState);
SW_BOOL IPZ_ZBC_DEV_GetTempDectState(void); 
void IPZ_ZBC_DEV_SetTempDectState(SW_BOOL bTempDectState);
SW_UINT32 IPZ_ZBC_DEV_GetApertAdjustState(void);
void IPZ_ZBC_DEV_SetApertAdjustState(SW_UINT32 s32ApertAdjustState);

#endif

